#include <iostream>
#include <stdio.h>
using namespace std;

struct Pos{
	int x;
	int y;
};

float area = 0;

float getArea(Pos left, Pos right, Pos other)
{
	float theResult = left.x*right.y + other.x*left.y + right.x*other.y - other.x*right.y - right.x*left.y - left.x*other.y;
//	cout << "Result:" << theResult << endl;
	return theResult;
}

void OnBao(Pos pos[], Pos left, Pos right, int index)
{
	if(index <= 0) return;
	
	float maxArea = 0;
	int maxI = 0;
	
	for(int i =  0; i < index; i++)
	{
		float theR = getArea(left, right, pos[i]);
//		cout << "theR:" << theR << endl; 
		if(theR > maxArea)
		{
			maxArea = theR;
			maxI = i;
		}
	}
	
	area += maxArea/2;
//	cout << "area = " << area << endl;
	
	Pos p1;
	p1.x = pos[maxI].x - left.x;
	p1.y = pos[maxI].y - left.y;
	
	Pos p2;
	p2.x = right.x - pos[maxI].x;
	p2.y = right.y - pos[maxI].y;
	
	Pos onPos1[100];
	int onIndex1 = 0;
	Pos onPos2[100];
	int onIndex2 = 0;
	
	for(int i = 0 ; i < index; i++)
	{
		Pos temp;
		temp.x = pos[i].x - left.x;
		temp.y = pos[i].y - left.y;	
		if(p1.x*temp.y - p1.y*temp.x > 0)
		{
			onPos1[onIndex1++] = pos[i];
		}
		temp.x = pos[i].x - pos[maxI].x;
		temp.y = pos[i].y - pos[maxI].y;
		if(p2.x*temp.y - p2.y*temp.x > 0)
		{
			onPos2[onIndex2++] = pos[i];
		}
	} 
	OnBao(onPos1, left, pos[maxI], onIndex1);
	OnBao(onPos2, pos[maxI], right, onIndex2);
}

void UnBao(Pos pos[], Pos left, Pos right, int index)
{
//	cout << "left:" << left.x << " "<< left.y << endl;
//	cout << "right:" << right.x << " "<< right.y << endl;
//	cout << "pos:" << pos[1].x << " "<< pos[1].y << endl;
	
	if(index <= 0) return;
	
	float maxArea = 0;
	int maxI = 0;
	
	for(int i =  0; i < index; i++)
	{
		float theR = getArea(left, right, pos[i]);
		if(theR < maxArea)
		{
			maxArea = theR;
			maxI = i;
		}
	}
	
	area -= maxArea/2;
	
	Pos p1;
	p1.x = pos[maxI].x - left.x;
	p1.y = pos[maxI].y - left.y;
	
	Pos p2;
	p2.x = right.x - pos[maxI].x;
	p2.y = right.y - pos[maxI].y;
	
	Pos onPos1[100];
	int onIndex1 = 0;
	Pos onPos2[100];
	int onIndex2 = 0;
	for(int i = 0 ; i < index; i++)
	{
		Pos temp;
		temp.x = pos[i].x - left.x;
		temp.y = pos[i].y - left.y;	
		if(p1.x*temp.y - p2.y*temp.x < 0)
		{
			onPos1[onIndex1++] = pos[i];
		}
		temp.x = pos[i].x - pos[maxI].x;
		temp.y = pos[i].y - pos[maxI].y;
		if(p2.x*temp.y - p2.y*temp.x < 0)
		{
			onPos2[onIndex2++] = pos[i];
		}
	} 
	UnBao(onPos1, left, pos[maxI], onIndex1);
	UnBao(onPos2, pos[maxI], right, onIndex2);
}

int main()
{
	int t;
	cin >> t;
	
	Pos onPos[105];
	int onIndex = 0;
	Pos unPos[105];
	int unIndex = 0;
	Pos pos[105]; 
	
	while(t--)
	{
		area = 0;
		int n;
		cin >> n;
		
		int left =0;
		int right = 0;
		for(int i = 0; i < n; i++)
		{
			cin >> pos[i].x >> pos[i].y;
			if(pos[i].x < pos[left].x || (pos[i].x == pos[left].x && pos[i].y < pos[left].y))
			{
				left = i;
			}
			if(pos[i].x > pos[right].x || (pos[i].x == pos[right].x && pos[i].y > pos[right].y))
			{
				right = i;
			}
		}
		
		if(n <= 2) 
		{
			cout << "0.0" << endl;
			break;
		}		
		
		Pos p1;
		p1.x = pos[right].x - pos[left].x;
		p1.y = pos[right].y - pos[left].y;
		
		for(int i = 0; i < n; i++)
		{
			Pos temp;
			temp.x = pos[i].x - pos[left].x;
			temp.y = pos[i].y - pos[left].y;
			
			if(p1.x*temp.y - p1.y*temp.x > 0)
			{
				onPos[onIndex++] = pos[i];
			}
			else
			{
				unPos[unIndex++] = pos[i];
			}
			
		}
		OnBao(onPos, pos[left], pos[right], onIndex);
		UnBao(unPos, pos[left], pos[right], unIndex);
		printf("%.1f\n", area);
		
	}
	return 0;
}


















